/**
 * 定投收益率计算器
 */

// 每月定投金额
var N = 400;

// 跌至最低点所需要的月数
var monthToFall = 6;

// 需要多少个月恢复牛市，通常是 5 年
var monthToClimb = 60;


//---- 定投方案 ----
// 定投总月数
var Y = 36;

// 指数最高点
var x0 = 7700;
// 指数最低点
var x_min = 2000;

// 逐月股价
var x = [x0];

for (let i = 1; i < Y; i++) {
  if (i <= monthToFall) {
    x[i] = x0 - i * (x0 - x_min) / monthToFall;
  } else {
    x[i] = x_min + (i - monthToFall) * (x0 - x_min) / monthToClimb;
  }
}
// console.log('逐月股价', x);

// 每月拿到的份额
var shareArr = x.map(item => N / item);

// 总的投入成本
var totalCost = N * Y;

// 得到的总份数
var totalShare = fixedTo2(shareArr.reduce((a, b) => a + b));

// 总收益额：
var totalSaleProfit = fixedTo2(totalShare * x[Y - 1]);

// 总盈利率（百分比）：
var totalSaleProfitRate = fixedTo2((totalSaleProfit / totalCost - 1) * 100);

// 年化收益率（百分比）：
var rateOfYear = fixedTo2(totalSaleProfitRate / (Y / 12));

console.log(`
  入市指数值：${x0}
  指数最低点：${x_min}
  总 成 本 ： ${totalCost} 元
  总 份 数 ： ${totalShare} 份
  卖出时间点：${Y} 个月后
  卖出时的指数：${x[Y - 1]}
  卖出总金额：${totalSaleProfit} 元
  总回报率 ：${totalSaleProfitRate}%
  年化收益率：${rateOfYear} %
`);


function fixedTo2(num) {
  return Number(Number(num).toFixed(2));
}
